//
//  UIViewController+tableView.h
//  zxc
//
//  Created by 李李善 on 2018/1/11.
//  Copyright © 2018年 李李善. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "MCCellInfo.h"

#import "BaseTableView.h"
#import "UITableView+tableView.h"
#import "BaseTableViewHeaderFooterView.h"
@interface UIViewController (tableView)

@property(nonatomic,assign)BOOL isAddMJRefreshHeader;

-(MCCellInfo *)tableView:(UITableView *)tableView cellForIndexPath:(NSIndexPath *)indexPath IsHeight:(BOOL)isheight;
-(MCHFViewInfo *)tableView:(UITableView *)tableView HeaderInSection:(NSInteger)section isBiao:(BOOL)isBiao;
-(MCHFViewInfo *)tableView:(UITableView *)tableView FooderInSection:(NSInteger)section isBiao:(BOOL)isBiao;

/**
 *  根据section从数据数组获取model
 *
 *  @param section 获取model所在数据数组的位置
 */
-(id _Nullable)headerViewModelForSection:(NSInteger)section;
/**
 *  根据section从数据数组获取model
 *
 *  @param section 获取model所在数据数组的位置
 */
-(id _Nullable)fooderViewModelForSection:(NSInteger)section;

/**
 *  cell初始化控件需要的数据
 *
 *  @param indexPath cell所在的indexPath
 *
 *  @return 需要的数据
 */
-(id _Nullable)cellInitForSourceAtIndexPath:(NSIndexPath *_Nullable)indexPath;

/**
 *  区头初始化控件需要的数据
 *
 *  @param section header所在的section
 *
 *  @return 需要的数据
 */
-(id _Nullable)headerInitForSourceAtSection:(NSInteger)section;

/**
 *  区尾初始化控件需要的数据
 *
 *  @param section fooder所在的section
 *
 *  @return 需要的数据
 */
-(id _Nullable)fooderInitForSourceAtSection:(NSInteger)section;

/**
 *  区头的更新方法
 *
 *  @param view      对于的那个区头
 *  @param model     对于model
 *  @param section view所在的section
 */
- (void)onUpdateHeaderView:(BaseTableViewHeaderFooterView * _Nullable)view model:(id _Nullable)model atSection:(NSInteger)section;
/**
 *  区尾的更新方法
 *
 *  @param view      对于的那个区尾
 *  @param model     对于model
 *  @param section view所在的section
 */
- (void)onUpdateFooderView:(BaseTableViewHeaderFooterView * _Nullable)view model:(id _Nullable)model atSection:(NSInteger)section;

/**
 *  设置控件的方法或者获取
 *
 *  @param cell      所在的单元格
 *
 *  @param tableView 所在的表格
 *  @param indexPath cell所在的indexPath
 */
-(void)onSetSubviewSELForCell:(BaseTableViewCell *_Nullable)cell forTableView:(UITableView *_Nullable)tableView forIndexPath:(NSIndexPath *_Nullable)indexPath;

-(void)onSetSubviewSELForviewHeader:(UITableViewHeaderFooterView*)view forTableView:(UITableView *)tableView forSection:(NSInteger)section;

-(void)onSetSubviewSELForViewFooder:(UITableViewHeaderFooterView*)view forTableView:(UITableView *)tableView forSection:(NSInteger)section;

/**
 *  根据子类获取单元格所在的NSIndexPath
 *
 *  @param view      子类
 *
 *  @return 所在的NSIndexPath
 */
-(NSIndexPath *_Nullable)indexPathForSubClass:(UIView *_Nullable)view;


@end
